package com.xinchao.dao;

import com.xinchao.model.AdvertisementMonitor;
import com.xinchao.model.dto.AdvertisementExposuresTouchWatchSumDTO;
import com.xinchao.model.dto.AdvertisementMonitorDTO;
import com.xinchao.model.dto.AdvertisementMonitorSumDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 广告监播Mapper
 *
 * @author dxy
 * @date 2018/9/20 15:58
 */
public interface AdvertisementMonitorMapper {
	/**
	 * 通过时间获取广告监播总数
	 *
	 * @param advertisementName 广告名称
	 * @param startTime         开始时间
	 * @param endTime           结束时间
	 * @param deviceNumber      机器码
	 * @return IndexAdvertisementMonitorSumVO
	 */
	AdvertisementMonitorSumDTO getAdvertisementMonitorSumByTime(@Param("advertisementName") String advertisementName, @Param("startTime") Long startTime,
	                                                            @Param("endTime") Long endTime, @Param("deviceNumber") String deviceNumber);

	/**
	 * 通过时间获取终端机器码列表
	 *
	 * @param startTime 开始时间
	 * @param endTime   结束时间
	 * @return Long
	 */
	List<String> listDeviceNumberByTime(@Param("startTime") Long startTime, @Param("endTime") Long endTime);

	/**
	 * 通过时间获取广告监播的曝光次数、触达人次、观看人次
	 *
	 * @param startTime 开始时间
	 * @param endTime   结束时间
	 * @return AdvertisementExposuresTouchWatchSumDTO
	 */
	AdvertisementExposuresTouchWatchSumDTO getAdvertisementExposuresTouchWatchSumByTime(@Param("startTime") Long startTime, @Param("endTime") Long endTime);

	/**
	 * 批量保存广告监播数据
	 *
	 * @param advertisementMonitorList List<AdvertisementMonitor>
	 */
	void insertAdvertisementMonitorBatch(List<AdvertisementMonitor> advertisementMonitorList);

	/**
	 * 获取广告监播表中的所有天数列表
	 *
	 * @return List<String>
	 */
	List<String> listAllDays();

	/**
	 * 通过时间获取广告监播总数
	 *
	 * @param startTime 开始时间
	 * @param endTime   结束时间
	 * @return List<AdvertisementMonitor>
	 */
	List<AdvertisementMonitorDTO> listAdvertisementMonitorDTO(@Param("startTime") Long startTime, @Param("endTime") Long endTime);
}
